use serde::Deserialize;
use dotenvy::dotenv;

#[derive(Debug, Deserialize)]
pub struct AppConfig {
    pub port: u16,
    pub database_url: String,
    pub jwt_secret: String,
}

impl AppConfig {
    pub fn load() -> Result<Self, config::ConfigError> {
        // 从 .env 文件加载环境变量。如果未找到 .env 文件、不可读或无效，则失败。
        dotenv().ok(); // 加载 .env 文件

        config::Config::builder()
            .add_source(config::Environment::default()) // 从环境变量读取
            .build()?
            .try_deserialize()
    }
}